<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Realiza a interacao entre a aplicacao e a tabela de produtos no banco de dados
 * 
 * @package application/models/adm
 * @name Usuario_model
 * @author Joao Claudio Dias Araujo <joao.araujo@tellks.com.br>
 */
class Produto_model extends CI_Model{
    
    private $tabela;
    
    function __construct() {
        parent::__construct();
        
        $this->tabela = 'produto';
        
    }
            
    /**
     * Busca todos os produtos do banco de dados
     * 
     * @return array
     */
    function get_all(){
        
        $produtos = $this->db->get($this->tabela);
        
        if($produtos->num_rows() > 0){
            
            return $produtos->result();
        }
        else {
            
            return array();
        }
    }
    
    /**
     * Busca os dados de um produto pelo seu ID
     * 
     * @param int $id ID do grupo
     * @return mixed
     */
    function get_by_id($id){
        
        $this->db->select('p.*,c.nome_categoria');
        
        $this->db->from($this->tabela .  ' AS p');
        
        $this->db->join('categoria AS c', 'c.id = p.categoria_id', 'LEFT');
        
        $this->db->where('p.id', $id);
        
        $resultado = $this->db->get();
        
        if($resultado->num_rows() > 0){
            
            $produto = $resultado->row(0);
            
            return $produto;
            
        }
        
        else{
            
            return false;
        }
        
    }
         
    /**
     * Insere um produto no banco de dados
     * 
     * @param sdtClass Object $produto Objeto contendo os dados do produto
     * @return boolean
     */
    function inserir($produto){
       
        $this->db->insert($this->tabela, $produto);
        
        $inseriu_produto = (bool)  $this->db->affected_rows();

        return($inseriu_produto);
    }
    
    /**
     * atualiza um produto no banco de dados
     * 
     * @param sdtClass Object $produto Objeto contendo os dados do produto
     * @return boolean
     */
    function atualizar($produto){
        
        $this->db->where('id', (int)$produto->id);
        
        $this->db->update($this->tabela,$produto);
        
        $atualizou_produto = (bool)$this->db->affected_rows();
        
        return ($atualizou_produto);
    }
    
    /**
     * Remove um produto do banco de dados
     * 
     * @param int $id ID do produto a ser removido
     * @return boolean
     */
    function remover($id){
        
        $this->db->where('id', (int)$id);
        
        $this->db->delete($this->tabela);
        
        return (bool)$this->db->affected_rows();
    }
    
    function get_by_nome($nome){
        
        $this->db->select('p.*,c.nome_categoria');
        $this->db->from('produto as p' );
        $this->db->join('categoria as c', 'c.id = p.categoria_id');
        $this->db->like('nome', $nome);
        
        $resultado = $this->db->get();
        
        if($resultado->num_rows() > 0){
            
            return $resultado->result_array();
        }
        else {
            
            return array();
        }
    }

}